#include <linux/init.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/fs_struct.h>
#include <linux/path.h>
#include <linux/sched.h>

MODULE_LICENSE("GPL");

struct iattr attr=
{
	.ia_atime.tv_sec = 0
};

int  fstest_init(void)
{
	struct dentry *dentry;
	
	struct inode * node = (struct inode*)(kmalloc(sizeof(struct inode), GFP_KERNEL));
	
	dentry = current->fs->pwd.dentry;     //获取当前文件的入口目录
	
	printk("attr.ia_atime.tv_sec = %ld\n", attr.ia_atime.tv_sec); //显示属性的时间值
	
	int res = notify_change(dentry, &attr, &node);                  //改变当文件的属性

	printk("The returned value of \"notify_change\" is %d.\n", res);
	
	//显示函数notify_change()的返回结果
	
	printk("attr.ia_atime.tv_sec = %ld\n", attr.ia_atime.tv_sec); //显示属性的时间值
	
	kfree(node);
	
	return 0;
}

void fstest_exit(void)
{
	printk("Goodbye %s\n",__func__);
}

module_init(fstest_init);
module_exit(fstest_exit);
